#ifndef ENTITY_H
#define ENTITY_H

#include "basicoject.h"

class OEntity : public BasicObject
{
    Q_OBJECT
    Q_PROPERTY(QString model READ model WRITE setModel)
    Q_PROPERTY(QString nodeId READ nodeId WRITE setNodeId)
    Q_PROPERTY(QString materialName READ materialName WRITE setMatName)
    Q_PROPERTY(bool castShadows READ castShadows WRITE setCastShadows)

public:
    explicit OEntity(QObject *parent = 0);
    virtual ~OEntity() {}

    ObjectType type() {
        return ENTITY;
    }

    virtual QString model() const {
        return m_model;
    }

    void setModel(const QString& model) {
        this->m_model = model;
    }

    QString nodeId() const {
        return m_nodeId;
    }

    void setMatName(const QString& name) {
        this->m_matName = name;
    }

    QString materialName() const {
        return m_matName;
    }

    void setNodeId(const QString& id) {
        this->m_nodeId = id;
    }

    void setCastShadows(bool cast) {
        m_castShadows = cast;
    }

    virtual bool castShadows() {
        return m_castShadows;
    }

signals:

public slots:

protected:
    QString m_model;
    QString m_nodeId;
    QString m_matName;
    bool m_castShadows;
};

#endif // ENTITY_H
